<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>

  // const p = new Promise((success, error)=>{
  //   success("hello");
  // })

  // const x = p.then(function(res){
  //   console.log(res);
  //   return new Promise(( a, b )=>{ });
  // });

  // console.log(x);

  // console.log(x === p);

  // 如果then的回调函数返回了一个非Promise实例：
    // 此时then的返回值为成功状态的promise实例，成功的数据为then的回调函数返回的数据
  // 如果then的回调函数返回了一个新的Promise实例：
    // 此时then的返回值就是回调函数返回的这个新的Promise实例


  // Promise实例的then的链式调用

  ajax("异步1").then(res=>{
    console.log(res);
    return ajax("异步2")
  }).then(res=>{
    console.log(res);
    return ajax("异步3")
  }).then(res=>{
    console.log(res);
    return "hello";
  }).then(res=>{
    console.log(res);
  })
  
  function ajax(url){
    return new Promise(( resolve, reject )=>{
      setTimeout(() => {
        resolve(url + " 成功了");
      }, Math.random() * 500);
    })
  }



  // =========



  // Promise实例的catch的链式调用
  // 如果catch的回调函数返回了一个非Promise实例：
    // 此时catch的返回值为成功状态的promise实例，成功的数据为catch的回调函数返回的数据
  // 如果catch的回调函数返回了一个新的Promise实例：
    // 此时catch的返回值就是回调函数返回的这个新的Promise实例

  
</script>
</html>